table of contents
INETD(8) | System Manager's Manual | INETD(8) |
NAZWA¶
inetd
—
super-serwer internetu
SKŁADNIA¶
inetd
[-d
]
[plik konfiguracyjny]
OPIS¶
Inetd
powinien być
wywoływany podczas startu systemu z
/etc/rc.local (zobacz rc(8)).
Nasłuchuje on później połączeń na
określonych gniazdach internetowych. Gdy na jednym z gniazd
zaistnieje połączenie, decyduje on, jakiej usłudze to
gniazdo odpowiada i wywołuje program, który
obsłuży żądanie. Po zakończeniu programu,
inetd kontynuuje nasłuchiwania gniazda (poza niektórymi
wypadkami, opisanymi poniżej). Ogólnie,
inetd
umożliwia używanie jednego
daemona do wywoływania wielu innych, zmniejszając wymagane
obciążenie systemu.
Opcje dostępne dla inetd:
-d
- Włącza debuggowanie.
Podczas uruchamiania, inetd
odczytuje
swoją konfigurację z pliku konfiguracyjnego, którym
domyślnie jest /etc/inetd.conf. Musi tam
być wpis dla każdego pola pliku konfiguracyjnego, z
poszczególnymi wpisami dla danego pola; wpisy są oddzielane
znakiem tabulacji lub spacji. Komentarze są zaznaczane przez ``#'' na
początku linii. Musi istnieć wpis dla każdego pola.
Pola pliku konfiguracyjnego są następujące:
nazwa usługi (service name) rodzaj gniazda (socket type) protokół (protocol) określenie, czy usługa ma "zwlekać" (wait/nowait[.max]) użytkownik[.grupa] (user[.group]) program serwera (server program) argumenty programu serwera (server program arguments)
Aby podać usługę opartą o Sun-RPC , wpis powinien zawierać te pola.
nazwa usługi/wersja (service name/version) rodzaj gniazda (socket type) rpc/protokół (rpc/protocol) zwłoka (wait/nowait[.max]) użytkownik[.grupa] (user[.group]) program serwera (server program) argumenty programu serwera (server program arguments)
Wpis nazwa-usługi jest nazwą prawidłowej usługi, zdefiniowanej w pliku /etc/services. Dla usług “wewnętrznych” (internal) (opisanych niżej), nazwa usługi musi być oficjalną nazwą usługi (to znaczy pierwszym wpisem w /etc/services). Podczas podawania usługi opartej o Sun-RPC , pole to jest prawidłową nazwą usługi RPC, zdefiniowaną w pliku /etc/rpc. Część na prawo od “/” jest numerem wersji RPC. Może to być zwyczajny argument numeryczny, lub zakres wersji. Zakres jest obramowany od niższej wersji do wyższej - “rusers/1-3”.
Wpis rodzaj gniazda powinien być jednym z “stream”, “dgram”, “raw”, “rdm”, lub “seqpacket”, zależnie od tego, czy gniazdo jest strumieniowe (stream), datagramowe (datagram), lub typu raw, reliably delivered message, czy też sequenced packet.
Pole protokół musi być prawidłowym protokołem, zdefiniowanym w /etc/protocols. Przykładami mogą być “tcp” lub “udp”. Usługi oparte o RPC są określane przez “rpc/tcp” lub “rpc/udp.”
Wpis
zwłoka jest
używany tylko dla gniazd datagramowych (inne gniazda powinny
mieć wpis “nowait” ). Jeśli serwer datagramowy
łączy się ze swoim rozmówcą,
zwalniając gniazdo w ten sposób, że
inetd
może odbierać dalsze
wiadomości z tego gniazda, to mówi się o nim jako o
serwerze “wielowątkowym” (multi-threaded) i powinno
się używać wpisu “nowait” Serwery
datagramowe, które przetwarzają wszystkie nadchodzące
do gniazda datagramy, ewentualnie mające timeouty, nazywa się
“jednowątkowymi” (single threaded) i powinno
używać się dla nich wpisu “wait.”
Comsat(8) (biff(1)) i
talkd(8) są przykładami tego drugiego
rodzaju serwerów datagramowych. Tftpd(8) jest
wyjątkiem; jest to serwer datagramowy, który zestawia
pseudopołączenia. Musi być zdefiniowany jako
“wait” aby zapobiec wyścigowi; serwer odczytuje
pierwszy pakiet, tworzy nowe gniazdo, następnie forkuje i wychodzi,
aby inetd
mógł robić swoje i
oczekiwać na nowe żądania usług, które
(jak zwykle) przyłącza następnie do odpowiednich innych
serwerów. Opcjonalny przyrostek “max” (oddzielony od
“wait” lub “nowait” kropką)
określa maksymalną liczbę instancji serwera, jakie
mogą zostać postawione przez inetd
w
czasie 60 sekund. Gdy zostanie to pominięte, “max”
przyjmuje wartość 40.
Wpis użytkownik powinien zawierać nazwę użytkownika użytkownika, pod którym powinien uruchamiać się serwer. Umożliwia to serwerom posiadanie mniejszych praw niż prawa roota. Opcjonalnie, po dodaniu kropki do nazwy użytkownika, można podać w tym polu nazwę grupy. Umożliwia to serwerom pracę w innym (podstawowym) id grupy niż ten, podany w pliku z hasłami. Jeśli grupa jest podana, a użytkownik nie jest rootem, to uzupełniające grupy związane z użytkownikiem wciąż będą ustawione.
Wpis
program serwera
powinien zawierać ścieżkę programu, który
ma być wywoływany przez inetd
po
otrzymaniu żądania na gnieździe. Jeśli
inetd
udostępnia tę
usługę wewnętrznie, to wpis ten powinien być
wpisem “internal”.
Wpis argumenty programu serwera powinien wyglądać tak jak zwykłe argumenty, poczynając od argv[0], który jest nazwą programu. Jeśli usługa jest udostępniana wewnętrznie, to wpis powinien przyjąć nazwę “internal.”
Inetd
udostępnia wiele
“trywialnych” usług wewnętrznie,
używając do tego swoich własnych procedur. Tymi
usługami są “echo”, “discard”,
“chargen” (generator znaków), “daytime”
(odczytywalny przez człowieka czas) oraz “time” (czas
odczytywalny przez maszynę, liczba sekund od północy 1
stycznia 1900). Wszystkie te usługi są oparte o tcp. Dla
dalszych szczegółów o tych usługach, skonsultuj
się z odpowiednim RFC z Centrum Informacji Sieci (Network Information
Center).
Inetd
odczytuje
swój plik konfiguracyjny od nowa gdy otrzyma sygnał
zawieszenia (hangup), czyli SIGHUP
. Usługi
mogą być tak dodawane, kasowane lub modyfikowane.
Inetd
tworzy plik
/etc/inetd.pid
który zawiera jego identyfikator procesu (PID).
ZOBACZ TAKŻE¶
comsat(8), fingerd(8), ftpd(8), rexecd(8), rlogind(8), rshd(8), telnetd(8), tftpd(8)
HISTORIA¶
Komenda inetd
pojawiła się w
4.3BSD. Wsparcie dla usług opartych o
Sun-RPC zostało zmodelowane wg
udostępnionego przez
Sun-OS
4.1.
16 Marzec, 1991 | BSD 4.3 |